useRef 會回傳一個 mutable
的 ref object
,.current
屬性為初始為傳入的參數。寫法如下:
const refContainer = useRef(initialValue); //initialValue 為初始值
在 html 標籤上加上 ref 屬性,就可以印出 DOM,以下方案例就是可以印出 input DOM
function App() {
const renderCount = useRef(0); // {current:0}
const [name, setName] = useState('');
const inputRef = useRef(null);
function changeValueHandler(e){
setName(e.target.value);
}
useEffect(() => {
renderCount.current += 1; //重新渲染一次就加一
},[name]);
function focusEvent(){
inputRef.current.focus();
}
return (
<div className="App">
<header className="App-header">
{/* 我們只要在 html 標籤上加上 ref 屬性,就可以透過 inputRef.current.focus()
直接讀取 DOM */}
<input ref={inputRef} value={name} onChange={changeValueHandler} type="text"/>
<p>渲染次數 {renderCount.current} </p>
<button onClick={focusEvent}>按鈕</button>
</header>
</div>
);
}
UseRef
不會重新 Render 元件,但可以更新值,也可以直接獲取 DOM